<template>
  <span>{{ label }}</span>
</template>

<script>
/* eslint-disable */
import formatter from "../provider/formatter";
import Layers from "@/lang/layers";

/**
 * 数据格式转换器
 *
 * 类似于数据字典，将数据转换为更易于查看的格式
 */
export default {
    name: "SeaText"
    , props: {
        // 值字段名
        value: {type: [Object, String, Boolean, Number, Date], default: ''}
        // 配置，允许使用内置的转换器，或者手动指定
        , formatter: {type: [String], default: undefined}
    }, computed: {
        label: function () {
            let format = this.formatter;
            if (Layers.isBlank(format)) {
                return this.value;
            } else {
                return formatter.format(format, this.value);
            }
        }
    }
    /**
     * 注册一个formatter，全局有效
     * 注意这个不是 Vue 标准下的函数，按照 node.js 的方式正常调用即可
     *
     * @param name
     * @param formatter 格式化函数
     */
    , register: function (name, fun) {
        formatter.register(name, fun);
    }
    /**
     * 注销一个formatter，全局有效
     * 注意这个不是 Vue 标准下的函数，按照 node.js 的方式正常调用即可
     *
     * @param name
     */
    , unregister: function (name, fun) {
        formatter.unregister(name, fun);
    }
}
</script>
